Metodología de investigación

Caso de estudio: Barrio Padre Carlos Mugica y su entorno formal

Acá hago una intro épica para mi tema de tesis. Una gran parte del análisis se vincula con este trabajo: https://buenosaires.gob.ar/publicaciones-de-informacion-territorial/indice-de-cobertura-de-las-necesidades-de-la-vida

LA UNIDAD TERRITORIAL
| Recorte y selección

Tomo el polígono del barrio Padres Carlos Mugica y el de la ciudad de Buenos Aires.

Como el objetivo es observar el acceso a la ciudad que tiene el Barrio Mugica en comparación a la ciudad formal circundante, comienzo creando un buffer a 1500 metros del Barrio Mugica, y tomo los radios censales (censo 2022) que se intersectan con el mismo.

Código
FALSE Reading layer `perimetro' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\perimetro.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 1 feature and 2 fields
FALSE Geometry type: MULTIPOLYGON
FALSE Dimension:     XY
FALSE Bounding box:  xmin: -58.53152 ymin: -34.70529 xmax: -58.33516 ymax: -34.52649
FALSE Geodetic CRS:  WGS 84
FALSE Reading layer `sector' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\sector.shp' 
FALSE   using driver `ESRI Shapefile'
FALSE Simple feature collection with 9 features and 3 fields
FALSE Geometry type: POLYGON
FALSE Dimension:     XYZ
FALSE Bounding box:  xmin: 26639.73 ymin: 74429.6 xmax: 28327 ymax: 75678.15
FALSE z_range:       zmin: -9246.328 zmax: -9246.328
FALSE Projected CRS: POSGAR 2007 / CABA 2019
FALSE Reading layer `radios_censales_filtrados' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\radios_censales_filtrados.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 3820 features and 11 fields
FALSE Geometry type: MULTIPOLYGON
FALSE Dimension:     XY
FALSE Bounding box:  xmin: -58.53092 ymin: -34.70544 xmax: -58.33514 ymax: -34.5265
FALSE Geodetic CRS:  WGS 84

Imagen 1. Ciudad Autónoma de Buenos Aires, polígono del Barrio Padre Carlos Mugica definido en la ley N° 6.129 (2018) y buffer de 1500m en torno al mismo.

Imagen 2. Radios Censales que se intersectan con el buffer (imagen 2)

En base a eso, excluyo ciertos radios donde no predomina el uso residencial, ya que lo que busco observar es el acceso que tienen las personas desde sus viviendas a los servicios urbanos. Los resultantes serán los radios que comprenden el Barrio Mugica, y los sectores que cuentan con la proximidad suficiente como para considerarse el entorno urbano formal al que debe integrarse la urbanización informal. Para filtrar los radios censales calculo la densidad de viviendas por radio censal y excluyo aquellos cuyo valor es menor a 3500.

El mapa resultante es el siguiente:

Código

Imagen 3. Radios censales seleccionados.

Calculo la sumatoria de los radios formales elegidos, y la divido entre el área del Barrio Mugica para agrupar los radios en “sectores próximos”, y conformar así unidades comparables.

Código
FALSE [1] 5.710156

Los sectores próximos se agrupan entonces de la siguiente manera, y serán comparadas sus características con las del Barrio Mugica:

Imagen 5. Radios censales seleccionados agrupados en el Barrio Mugica y 6 sectores próximos.

ACCESIBILIDAD
| Áreas accesibles a pie

Para estudiar el acceso que tiene la población a los servicios de la ciudad, tengo en cuenta el traslado a pie y por medios de transporte públicos. En primer lugar, trazo isocronas desde 5 puntos aleatorios definidos dentro del polígono del Barrio Mugica, y de cada uno de los sectores próximos. Tomo los radios censales seleccionados y agrupados previamente y defino los polígonos totales de los sectores próximos.

Código
FALSE Reading layer `puntos_aleatorios_bm' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\puntos_aleatorios_bm.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 9 features and 3 fields
FALSE Geometry type: POINT
FALSE Dimension:     XY
FALSE Bounding box:  xmin: 26731.95 ymin: 74666.48 xmax: 27969.53 ymax: 75617.25
FALSE Projected CRS: POSGAR 2007 / CABA 2019
FALSE Reading layer `isocronas15.3_bm' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\isocronas15.3_bm.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 5 features and 3 fields
FALSE Geometry type: MULTIPOLYGON
FALSE Dimension:     XY
FALSE Bounding box:  xmin: -58.4002 ymin: -34.59451 xmax: -58.36737 ymax: -34.57368
FALSE Geodetic CRS:  WGS 84
FALSE Reading layer `puntos_aleatorios_sp' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\puntos_aleatorios_sp.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 30 features and 2 fields
FALSE Geometry type: POINT
FALSE Dimension:     XY
FALSE Bounding box:  xmin: -58.40599 ymin: -34.60153 xmax: -58.37321 ymax: -34.58191
FALSE Geodetic CRS:  WGS 84
FALSE Reading layer `isocronas15_sp' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\isocronas15_sp.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 30 features and 3 fields
FALSE Geometry type: MULTIPOLYGON
FALSE Dimension:     XY
FALSE Bounding box:  xmin: -58.41506 ymin: -34.61098 xmax: -58.36295 ymax: -34.57408
FALSE Geodetic CRS:  WGS 84

Imagen 5. Polígonos globales de los sectores próximos conformados por sus radios censales.

De esta manera, tengo 5 puntos aleatorios en cada sector, con una isocrona partiendo de cada uno. En total son 35 puntos e isocronas, contando los propios del Barrio.

Imagen 6. Isocronas de 15 minutos a pie desde los puntos aleatotios dentro del Barrio Mugica y de cada uno de los 6 sectores próximos.

ACCESIBILIDAD
| Áreas accesibles en Transporte Público

Además de las zonas a las cuales la población puede acceder a pie, tengo en cuenta las que son accesible utilizando todos los medios de transporte público al alcance. Para encontrar todos los medios de transporte a incluir, tomo las isocronas y las reduzco 150 metros en todo su contorno (equivalentes a 2 minutos a pie), ya que no tiene sentido utilizar aquellas paradas/estaciones/puntos de bicicletas de la ciudad que están en esa área, porque para ese momento, el viaje desde el punto ya habría durado 15 minutos, y es el límite superior que quiero conservar. Además, debe tenerse en cuenta el tiempo promedio que lleva ir de una parada a otra, por lo que contar con menos implicaría no poder recorrer ni una parada desde el momento en el que se toma el colectivo por ejemplo.

El tiempo promedio que tarda un colectivo en recorrer una parada a otra en la Ciudad de Buenos Aires puede variar según diversos factores, como la línea específica, la hora del día y las condiciones del tráfico. Sin embargo, algunas estimaciones generales:

Velocidad promedio: En trayectos urbanos dentro de la ciudad, la velocidad promedio de los colectivos es de aproximadamente 10,5 km/h. Por ejemplo, un viaje entre Parque Centenario y Plaza de Mayo toma alrededor de 40 minutos en colectivo.

Distancia entre paradas: Las paradas suelen estar separadas por unos 400 metros en promedio, especialmente en corredores como el Metrobús Juan B. Justo.

Tiempo entre paradas: Dado lo anterior, el tiempo entre una parada y la siguiente suele oscilar entre 2 y 5 minutos, dependiendo del tráfico y la frecuencia del servicio.

Metrobús: En los corredores del Metrobús, que cuentan con carriles exclusivos, los tiempos de viaje pueden reducirse hasta en un 40%.

Entonces, si tomo mínimo del tiempo estimado de una parada, 2 minutos, necesito reducir las isocronas a 13 minutos para seleccionar así los medios de transporte más alejados que se pueden alcanzar desde los puntos. (Una persona promedio puede caminar entre 130 y 170 metros en 2 minutos en la ciudad, dependiendo del flujo peatonal, semáforos, y estado de las veredas.)

(https://www.infobae.com/tendencias/2016/12/12/como-se-viaja-en-transporte-publico-en-la-ciudad-de-buenos-aires/ https://www.clarin.com/ciudades/capital-gba-tarda-90-minutos-promedio-ir-volver-trabajo_0_Hkee2kFif.html?srsltid=AfmBOoovC3hiKDQGJMDZW-2lKp3s5LDfDqLUZcFnCsPbcLcvVbHwzUh6 https://buenosaires.gob.ar/sites/default/files/2023-04/Viajes_Transporte_P%C3%BAblico_202202%20con%20dise%C3%B1o%20actualizado.pdf https://buenosaires.gob.ar/movilidad/metrobus/metrobus-juan-b-justo https://www.buenosairesbus.com/seguimiento https://transport.opendatasoft.com/explore/dataset/moovit-datos/table/ https://revistacolectibondi.com.ar/2024/12/12/cuanto-tiempo-pasamos-en-el-colectivo/ https://es.wikipedia.org/wiki/Metrob%C3%BAs_(Buenos_Aires))

Como OSMR(usado para calcular las isocronas) utiliza una medición de 83.33m/minuto, en vez de hacer nuevamente las isocronas a 13 minutos (proceso más costoso), las reduzco con un buffer a -166.66m.

Código
FALSE Reading layer `paradas_bm' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\paradas_bm.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 122 features and 17 fields
FALSE Geometry type: POINT
FALSE Dimension:     XY
FALSE Bounding box:  xmin: 5648073 ymin: 6171397 xmax: 5649523 ymax: 6172984
FALSE Projected CRS: POSGAR 94 / Argentina 5
FALSE Reading layer `paradas_sp' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\paradas_sp.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 2438 features and 20 fields
FALSE Geometry type: POINT
FALSE Dimension:     XY
FALSE Bounding box:  xmin: 5645647 ymin: 6169678 xmax: 5649683 ymax: 6173137
FALSE Projected CRS: POSGAR 94 / Argentina 5
Código
FALSE Reading layer `recorridos_sp' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\recorridos_sp.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 488 features and 11 fields
FALSE Geometry type: MULTILINESTRING
FALSE Dimension:     XY
FALSE Bounding box:  xmin: 5572929 ymin: 6121664 xmax: 5689963 ymax: 6233380
FALSE Projected CRS: POSGAR 94 / Argentina 5
FALSE Reading layer `recorridos_bm' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\recorridos_bm.geojson' 
FALSE   using driver `GeoJSON'
FALSE Simple feature collection with 244 features and 11 fields
FALSE Geometry type: MULTILINESTRING
FALSE Dimension:     XY
FALSE Bounding box:  xmin: 5573347 ymin: 6121664 xmax: 5689963 ymax: 6233308
FALSE Projected CRS: POSGAR 94 / Argentina 5

Imagen 7. Recorridos enteros de los colectivos que pasan por las paradas seleccionadas. Cada recorrido tiene una etiqueta que expresa la línea, recorrido y sentido del mismo.

Código inútil-arreglar

Rename geometry column and keep it

recorridos_bm <- recorridos_bm %>% rename(geometry_recorrido = geometry)

recorridos_bm_df <- st_drop_geometry(recorridos_bm)

Set geometry column name in paradas_bm

names(paradas_bm)[names(paradas_bm) == “geometry”] <- “geometry_parada” st_geometry(paradas_bm) <- “geometry_parada”

Clean and prepare paradas

paradas_desde_bm <- paradas_bm %>% unnest(linea_sentido) %>% filter(linea_sentido != ” NANA”) %>% select(fid, id_origen, geometry_parada, geometry_puntos, hasta_distancia, hasta_tiempo, desde_tiempo, linea_sentido)

Ensure geometry_parada is a column (not active geometry)

paradas_desde_bm <- paradas_desde_bm %>% mutate(geometry_parada = st_geometry(.))

Join safely

recorridos_desde_bm <- paradas_desde_bm %>% left_join( recorridos_bm_df %>% select(linea_sentido, geometry_recorrido), by = “linea_sentido” )

Rebuild sf with geometry_parada as active geometry

recorridos_desde_bm <- st_as_sf(recorridos_desde_bm, sf_column_name = “geometry_parada”)

#Calculo en m la distancia que se puede recorrer con el tiempo disponible que queda del viaje de 15m desde la parada a la que se llega en adelante: ##recorridos_desde_bm = recorridos_desde_bm %>% ## mutate(desde_distancia = desde_tiempo*250) #Teniendo en cuenta que la velocidad efectiva promedio del servicio contando paradas son 15km/m

Función para proyectar el punto sobre la línea

proyectar_punto_en_linea <- function(geom_linea, geom_punto) { nearest_line <- st_nearest_points(geom_punto, geom_linea) points <- st_cast(nearest_line, “POINT”)

if (length(points) != 2) { warning(“Projection failed.”) return(NA) }

projected_point <- points[2]

# Set CRS explicitly projected_point <- st_set_crs(projected_point, st_crs(geom_linea))

return(projected_point) }

cortar_linea_desde_punto <- function(geom_linea, geom_punto, dist_max_m) { if (st_crs(geom_linea) != st_crs(geom_punto)) { print(st_crs(geom_linea)) print(st_crs(geom_punto)) stop(“CRS mismatch between line and point”) }

# Project the point onto the line punto_proyectado <- proyectar_punto_en_linea(geom_linea, geom_punto)

# Cut the line at the projected point cortar_linea_raw <- tryCatch( lwgeom::st_split(geom_linea, punto_proyectado), error = function(e) return(NA) )

if (is.na(cortar_linea_raw)) return(NA)

cortar_linea <- st_collection_extract(cortar_linea_raw, “LINESTRING”)

if (length(cortar_linea) < 2) return(NA)

dists <- st_distance(st_startpoint(cortar_linea), punto_proyectado) segmento_proximo <- cortar_linea[[which.min(as.numeric(dists))]]

largo_total <- as.numeric(st_length(segmento_proximo))

if (dist_max_m >= largo_total) { return(segmento_proximo) }

corte_punto <- st_line_sample(segmento_proximo, sample = dist_max_m / largo_total)

corte_final_raw <- tryCatch( lwgeom::st_split(segmento_proximo, corte_punto), error = function(e) return(NA) )

if (is.na(corte_final_raw)) return(NA)

corte_final <- st_collection_extract(corte_final_raw, “LINESTRING”)

return(corte_final[[1]]) }

Ahora proyectar y cortar

recorridos_desde_bm <- recorridos_desde_bm %>% rowwise() %>% mutate( geometry_parada_proyectada = list(proyectar_punto_en_linea(geometry_recorrido, geometry_parada)), recorrido_desde_parada = list(cortar_linea_desde_punto(geometry_recorrido, geometry_parada_proyectada, desde_distancia)) ) %>% ungroup()


LOCALES COMERCIALES
| Dentro de los polígonos

Comercios dentro del Barrio Mugica

Código
FALSE Driver: GPKG 
FALSE Available layers:
FALSE                 layer_name        geometry_type features fields
FALSE 1                  alturas              Polygon     4693     19
FALSE 2             poligono_ley 3D Multi Line String        1      1
FALSE 3                comercios                Point     1510     16
FALSE 4      alturas_construidas              Polygon     4226      7
FALSE 5           vivienda_nueva              Polygon      786      9
FALSE 6              direcciones                Point     7772     12
FALSE 7             zonificacion              Polygon      305      4
FALSE 8               parcelaria              Polygon     4190     27
FALSE 9        parcelaria_puntos                Point     4190     27
FALSE 10                manzanas                           114     17
FALSE 11                sectores              Polygon        9      3
FALSE 12         sectores_puntos                Point        9      3
FALSE 13                  calles                            95      2
FALSE 14      edificios_publicos              Polygon       15      3
FALSE 15       espacios_publicos              Polygon       40      5
FALSE 16 organizaciones_sociales              Polygon       59     16
FALSE                         crs_name
FALSE 1        POSGAR 2007 / CABA 2019
FALSE 2  Campo Inchauspe / Argentina 5
FALSE 3        POSGAR 2007 / CABA 2019
FALSE 4        POSGAR 2007 / CABA 2019
FALSE 5        POSGAR 2007 / CABA 2019
FALSE 6        POSGAR 2007 / CABA 2019
FALSE 7        POSGAR 2007 / CABA 2019
FALSE 8        POSGAR 2007 / CABA 2019
FALSE 9        POSGAR 2007 / CABA 2019
FALSE 10       POSGAR 2007 / CABA 2019
FALSE 11       POSGAR 2007 / CABA 2019
FALSE 12       POSGAR 2007 / CABA 2019
FALSE 13       POSGAR 2007 / CABA 2019
FALSE 14       POSGAR 2007 / CABA 2019
FALSE 15       POSGAR 2007 / CABA 2019
FALSE 16       POSGAR 2007 / CABA 2019
FALSE Reading layer `comercios' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\informacion_territorial.gpkg' 
FALSE   using driver `GPKG'
FALSE Simple feature collection with 1510 features and 16 fields (with 155 geometries empty)
FALSE Geometry type: POINT
FALSE Dimension:     XY
FALSE Bounding box:  xmin: 26665.01 ymin: 74469.82 xmax: 28292.31 ymax: 75662.99
FALSE Projected CRS: POSGAR 2007 / CABA 2019
FALSE Reading layer `Supermercados' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\meu_tesis_supermercados_caba.kml' 
FALSE   using driver `KML'
FALSE Simple feature collection with 44 features and 2 fields
FALSE Geometry type: POINT
FALSE Dimension:     XYZ
FALSE Bounding box:  xmin: -58.45161 ymin: -34.61856 xmax: -58.37251 ymax: -34.57343
FALSE z_range:       zmin: 0 zmax: 0
FALSE Geodetic CRS:  WGS 84

Comercios en los sectores formales próximos

Código inútil-arreglar

IRRIGACIÓN
| Calles comprendidas en los sectores y accesos

Intersectando el callejero con los polígonos del Barrio Mugica y de los sectores próximos puedo calcular la irrigación vial al polígono.

Código inútil-arreglar
FALSE Reading layer `calles' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\calles.shp' 
FALSE   using driver `ESRI Shapefile'
FALSE Simple feature collection with 31904 features and 22 fields
FALSE Geometry type: LINESTRING
FALSE Dimension:     XY
FALSE Bounding box:  xmin: -58.53244 ymin: -34.70574 xmax: -58.34191 ymax: -34.52947
FALSE Geodetic CRS:  WGS 84
Código

Avenida: Calee: Pasaje: Pasillo: Ancho variable de 2 m a 1,35 m. No es calle oficial por ley 6129.

Código
FALSE Reading layer `calles' from data source 
FALSE   `C:\Users\as\Documents\00_TESIS\meu_tesis\data\informacion_territorial.gpkg' 
FALSE   using driver `GPKG'
FALSE Simple feature collection with 95 features and 2 fields
FALSE Geometry type: MULTILINESTRING
FALSE Dimension:     XY
FALSE Bounding box:  xmin: 26649.82 ymin: 74426.03 xmax: 28335.05 ymax: 75665.57
FALSE Projected CRS: POSGAR 2007 / CABA 2019
Código

ggplot(b_buffer) + geom_sf()